package com.alks.function.mapper.web.statements;

import com.alks.entity.data.entity.*;
import com.alks.entity.data.entity.stitch.StitchMonthVo;
import com.alks.function.data.dto.develop.DevelopBrand;
import com.alks.function.data.dto.develop.DevelopDelivery;
import com.alks.function.data.dto.finance.statement.DhReceiptDetailDto;
import com.alks.function.data.dto.finance.statement.DhReceiptDto;
import com.alks.function.data.request.prod.ProdDayDetail;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Map;

@Mapper
public interface StatementsMapper {

    List<StatementsInvoice> dHFinanceCreditDetail(@Param("invoiceNo") String invoiceNo, @Param("startDate") Date startDate, @Param("endDate") Date endDate);

    List<DhFinanceCreditDetail> downloadDhFinanceCreditDetail(StatementsInvoice result);

    List<StitchMonthVo> getStitchMonthProd(@Param("month") String month, @Param("prodSeq") String prodSeq);

    Map<String, Object> getStitchMonthProdTotal(@Param("month") String month, @Param("prodSeq") String prodSeq);

    BigDecimal getZqty(@Param("month") String month, @Param("prodSeq") String prodSeq);

    BigDecimal getDqty(@Param("month") String month, @Param("prodSeq") String prodSeq);

    BigDecimal getSqty(@Param("month") String month, @Param("prodSeq") String prodSeq);

    List<CutYield> getCurrentMonth(@Param("workerId") String workerId, @Param("month") String month, @Param("choose") String choose, @Param("prodSeq") String prodSeq);

    List<StitchMonthVo> getOtherMonthProd(@Param("month") String month, @Param("prodSeq") String prodSeq);

    List<Map<String,Object>> prodMonthProd(String month);

    Map<String, Object> prodMonthProdDetail(@Param("mon") String mon, @Param("prodSeq") String prodSeq);

    Map<String, Object> prodMonthProdDetail1(@Param("string") String string, @Param("prodSeq") String prodSeq);

    List<ProdDayDetail> prodDayProd(@Param("day") String day,String prodSeq);

    List<DevelopDelivery> prodDayProdByYear(@Param("year") String year);

    List<DevelopDelivery> prodDayProdByBrand(@Param("month") String month);

    List<DevelopBrand> prodDayProdByBrandDetail(@Param("month") String month, @Param("prodSeq") String prodSeq);

    List<DhReceiptDto> getDhReceiptHead(@Param("receiptNo") String receiptNo, @Param("startTime") Date startTime, @Param("endTime") Date endTime, @Param("custom") String custom);

    BigDecimal getDhReceiptHeadAmt(@Param("receiptNo") String receiptNo, @Param("startTime") Date startTime, @Param("endTime") Date endTime, @Param("custom") String custom);

    List<DhReceiptDetailDto> getDhReceiptDetail(@Param("receiptNo") String receiptNo);

    Map<String, Object> getDhReceiptDetailAmt(@Param("receiptNo") String receiptNo);

    List<DevelopDelivery> prodDayProdByBrands(String month);

    @Select("select distinct season_type from PC_ORDER_HEAD where brand = #{brand} order by season_type ")
    List<String> getSeasonByBrand(String brand);

    List<DevelopDelivery> analysisByBrand(@Param("brand") String brand, @Param("season") String season);

    List<DevelopBrand> getUnfinishedByBrand(@Param("brand") String brand, @Param("season") String season, @Param("prodSeq") String prodSeq, @Param("month") String month);

    List<YpProdTotal> getCompletedByMonth(@Param("startDate") Date startDate, @Param("endDate") Date endDate);

    List<Map> getWeekPlan1(@Param("startDate") Date startDate, @Param("endDate") Date endDate);

    List<Map> getWeekPlan2(@Param("startDate") Date startDate, @Param("endDate") Date endDate);

    List<Map> getWeekPlan3(@Param("startDate") Date startDate, @Param("endDate") Date endDate);

    List<Map> getWeekPlan4(@Param("startDate") Date startDate, @Param("endDate") Date endDate);

    List<Map> getWeekPlan5(@Param("startDate") Date startDate, @Param("endDate") Date endDate);

    List<Map> getWeekPlan6(@Param("startDate") Date startDate, @Param("endDate") Date endDate);

    List<Map> getWeekPlan7(@Param("startDate") Date startDate, @Param("endDate") Date endDate);

    List<YpPlanDay> getDayPlan5(@Param("day") Date day);

    List<YpPlanDay> getDayPlan1(@Param("day") Date day);

    List<YpPlanDay> getDayPlan2(@Param("day") Date day);

    List<YpPlanDay> getDayPlan3(@Param("day") Date day);

    List<YpPlanDay> getDayPlan4(@Param("day") Date day);

    List<YpPlanDay> getDayPlan6(@Param("day") Date day);

    List<YpPlanDay> getDayPlan7(@Param("day") Date day);

    List<YpPlanDayDelay> getDayPlanDelay1(@Param("day") Date day);

    List<YpPlanDayDelay> getDayPlanDelay2(@Param("day") Date day);

    List<YpPlanDayDelay> getDayPlanDelay3(@Param("day") Date day);

    List<YpPlanDayDelay> getDayPlanDelay4(@Param("day") Date day);

    List<YpPlanDayDelay> getDayPlanDelay5(@Param("day") Date day);

    List<YpPlanDayDelay> getDayPlanDelay6(@Param("day") Date day);

    List<YpPlanDayDelay> getDayPlanDelay7(@Param("day") Date day);
}
